package 面向对象;
/**
  模板方法模式
  定义一个算法中的骨架，而把一些可变部分的实现延伸到子类中
  模板方法可以使子类不改变算法的结构即可改算法某些特定的步骤。
  
*/
public class 抽象类2模板方法应用
{
	public static void main(String[] args){
		UserManager um=new UserManager();
		System.out.println("=========");
		um.action("admin","add");
		um.action("www","del");
	}
}

abstract class BaseManager{
	//算法操作骨架
	public void action(String name,String method){
		if("admin".equals(name)){
			//调用的抽象方法
			execute(method);
		}else{
			System.out.println("你没有操作权限");
		}
	}
	//延迟到子类具体实现的方法
	public abstract void execute(String method);
}

class UserManager extends BaseManager{
	//执行操作前需要验证用户权限，写入"骨架"部分
	public void execute(String method){
		if("add".equals(method)){
			System.out.println("执行了添加操作");
		}else if("del".equals(method)){
			System.out.println("执行了删除操作");
		}
	}
}
class ClassManager extends BaseManager{
	//同样需要验证
	public void execute(String method){}
}
